/**
 * @author wn
 * @date 2023/03/10 10:47:16
 * @description: 处理 menu 相关的 工具类
 *
 * ！！！！ 递归调用 返回数据方法外 定义  否则再次进入 置空
 *
 * 1 递归 所有 menu 子节点
 * 2 递归 所有menu 根节点
 * 3 递归 menu 第一层 根节点
 * 4 根据 path 查找 title
 */

// 递归 所有 permission 子节点
// 传入数组  permissionList
const lists = []
export const recursiveChildNodes = menus => {
	for (let i of menus) {
		// 根节点 没有 children , === 'layouts/RouteView'
		if (!i.hidden && i.component !== 'layouts/RouteView') {
			lists.push(i)
		}
		if (i.children && i.children.length > 0) {
			recursiveChildNodes(i.children)
		}
	}
	return lists
}

// 递归 menu 第一层 根节点
const lists1 = []
export const recursiveParentNodeFIrst = menus => {
	menus.forEach(i => {
		// 根节点 没有 children , === 'layouts/RouteView'
		if (!i.hidden && i.component === 'layouts/RouteView') {
			lists1.push(i)
		}
	})
	return lists1
}

/**
 * 递归 所有menu 根节点
 * 第 9个 RouteVIew  没有匹配上
 * 第一个 /dashboard/analysis 不匹配
 */
const lists2 = []
export const recursiveParentNode = menus => {
	menus.forEach(i => {
		// 根节点 没有 children , === 'layouts/RouteView'
		if (!i.hidden && i.component === 'layouts/RouteView') {
			lists2.push(i)
		}
		if (i.children && i.children.length > 0) {
			recursiveParentNode(i.children)
		}
	})
	return lists2
}

// 根据 path 查找 title
let title
export const recursiveTitle = (path, menus) => {
	for (const menu of menus) {
		// 根节点 有没有 path
		if (menu.path === path) {
			title = menu.meta.title
			return title
		} else if (menu.children && menu.children.length > 0) {
			recursiveTitle(path, menu.children)
		}
	}
	return title
}

/**
 * 根据 path  找到 打开  的 keys 数组
 * 当前 选中的菜单 和 父级菜单
 * const openKeys = []
 */
export const recursiveSelectedKeys = (path, menus, openKeys) => {
	for (const menu of menus) {
		// 根节点 有没有 path
		if (menu.path === path) {
			openKeys.push(menu.path)
			return true
		} else if (Array.isArray(menu.children)) {
			if (recursiveSelectedKeys(path, menu.children, openKeys)) {
				openKeys.push(menu.path)
				return true
			}
		}
	}
}
